package pl.touk.jenkins.spark; import org.apache.commons.io.IOUtils; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.concurrent.FutureCallback; import org.apache.http.impl.nio.client.CloseableHttpAsyncClient; import org.apache.http.impl.nio.client.HttpAsyncClients; import java.io.IOException; import java.util.logging.Logger; public class SparkApi { private static final Logger LOGGER = Logger.getLogger(SparkApi.class.getName()); private final static String DEFAULT_SPARK_API_URL = "https://api.spark.io/v1"; private final CloseableHttpAsyncClient httpclient; private final String accessToken; private final String deviceId; private final String sparkCloudUrl; public SparkApi(String accessToken, String deviceId) { this(accessToken, deviceId, DEFAULT_SPARK_API_URL); } public SparkApi(String accessToken, String deviceId, String sparkCloudUrl) { this.accessToken = accessToken; this.deviceId = deviceId; this.sparkCloudUrl = sparkCloudUrl; this.httpclient = HttpAsyncClients.createDefault(); this.httpclient.start(); } public void notify(String function) { HttpPost request = new HttpPost(sparkCloudUrl + String.format("/devices/%s/%s", deviceId, function)); request.addHeader("Authorization", "Bearer " + accessToken); httpclient.execute(request, new FutureCallback<HttpResponse>() { @Override public void completed(HttpResponse httpResponse) { try { LOGGER.info("Request completed: " + IOUtils.toString(httpResponse.getEntity().getContent())); } catch (IOException ignored) { } } @Override public void failed(Exception e) { LOGGER.info("Request failed: " + e); } @Override public void cancelled() { } }); } }